// 是否有更新检测
class Update {
  // if (!wx.canIUse('getUpdateManager')) {
  //   return;
  // }
  // const updateManager = wx.getUpdateManager();
  constructor() {
    this.updateManager = wx.getUpdateManager();
  }
  // 检测更新
  checkUpdate() {
    return new Promise((resolve, reject) => {
      this.updateManager.onCheckForUpdate((res) => {
        // 请求完新版本信息的回调
        if (res.hasUpdate) {
          resolve(true);
        } else {
          resolve(false);
        }
      });
    });
  }
  // 下载更新
  downloadUpdate() {
    return new Promise((resolve, reject) => {
      this.updateManager.onUpdateReady(() => {
        // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
        this.updateManager.applyUpdate();
      });
      this.updateManager.onUpdateFailed(() => {
        // 新的版本下载失败
        reject(false);
      });
    });
  }
  // 更新
  update() {
    return new Promise((resolve, reject) => {
      this.checkUpdate()
        .then((res) => {
          if (res) {
            this.downloadUpdate()
              .then((res) => {
                resolve(true);
              })
              .catch((err) => {
                reject(err);
              });
          } else {
            resolve(false);
          }
        })
        .catch((err) => {
          reject(err);
        });
    });
  }
}

export default new Update();
